1. Field of the Invention
The present invention generally relates to a method and apparatus for use in a cache storage system for a structured external storage (SES) facility. More particularly, the invention relates to a method and apparatus for reissuing an allocate command to an already existing structure (e.g., cache or list), and for assigning new allocation parameters thereto to expand, contract or reapportion the structure, as storage resources become available in the SES facility and as processor cycles become available to execute the changes.
2. Description of the Related Art
An SES facility is used for coupling data processing systems together and is a repository for shared data objects (e.g., Cache objects and List objects). The SES has a processing capacity which allows it to independently process commands, or messages, received from sharing systems through a defined message protocol. Each of the sharing systems has a SES Support Facility which permits it to receive notifications from the SES without interruption of mainline processing within the processor (e.g., the host processor) on which the sharing system is operating. In processing these commands, the SES may generate messages to the command-sending system, or to other systems. In the SES, a command serialization mechanism permits the parallel execution of multiple commands, while preserving the integrity of data objects. The SES is capable of independent command execution and of storing and operating on at least two different types of shared data objects in response to commands from sharing systems. Further, the support facility at each sharing processor is capable of interacting with and receiving notice from a shared coupling device containing a plurality of distinct data object types.
A cache structure or list structure is created in the SES facility when the operating system issues an allocate-cache-structure or allocate-list-structure command. The amount of SES storage assigned to the structure for the creation of the directory entries and data elements, and the relative numbers of each is specified via request operands associated with the allocate command and are referred to as "allocation parameters". However, the values of the allocation parameters are estimates based on expected structure usage, and may deviate from the actual usage. Moreover, usage is a direct function of workload, thereby changing dynamically in the short term and growing beyond the bounds of the storage structure in the long term.
A problem encountered by conventional systems is adjusting the allocation parameters to optimally fit the actual usage. A conventional solution has been to deallocate the cache (or list) structure and to reallocate it with new values for the allocation parameters. However, this technique has several serious drawbacks.
First, service provided by the cache (or list) structure is disrupted for the duration of the deallocate and subsequent allocate operations. Secondly, the requested storage resources may not be available to satisfy the allocation request. For example, the storage may have been assigned to a second cache (or list) structure in the interval between the deallocate and the allocate operations or, alternatively, the storage may not have been ever available.